npm packages.json依赖版本号规则
npm 版本控制机制
npm的版本号,使用语义化版本
主版本号.次版本号.修订号(Major.Minor.Patch)
4 . 17 . 21
npm 版本前缀
常见的版本前缀有
^
:匹配最新的大版本依赖包,根据大版本号是否为0,能匹配的版本不一致。
"lodash": "^4.17.21" // 匹配 >=4.17.21 <5.0.0
"lodash": "^0.2.3" //匹配 >=0.2.3 <0.3.0
- 大版本号为0,则插入号的行为与波浪号相同,
- 因为此时处于开发阶段,即使是次要版本号变动,也可能带来程序的不兼容。(主版本)
~
: 匹配最近的版本依赖包,根据~
后的版本号形态确定运行更新的版本。
"lodash": "~4.17.21" //表示 >=4.17.21 且 <4.18.0
"lodash": "~4.17" //表示 >=4.17.0 且 <4.18.0
"lodash": "~4" //表示 >=4.0.0 且 <5.0.0
> >= < <=
: 大于、大于等于、小于、小于等于指定的版本
"lodash": ">4.17.21"
"lodash": ">=4.17.21"
"lodash": "<4.17.21"
"lodash": "<=4.17.21"
x
: x的位置可以为任意版本。
"lodash": "4.x" // 4.任意版本.任意版本
"lodash": "4.17.x" // 4.17.任意版本
"lodash": "*" // 任意版本
"lodash": "" // 任意版本
-
: 表示版本范围,表示大于等于version1,小于等于version2。
"lodash": "4.17.21 - 4.17.22" // 4.17.21 <= 版本 <= 4.17.22
||
: 表示或,满足任意一个版本即可
"lodash": "4.17.21 || 4.17.22 || 4.17.23" // 4.17.21 或者 4.17.22 或者 4.17.23
"lodash": "4.17.21 - 4.17.22 || 4.17.23 - 4.17.24" // 4.17.21 <= 版本 <= 4.17.22 或者 4.17.23 <= 版本 <= 4.17.24
最佳实践### 最佳实践
- 开发依赖推荐使用 ^
- 可以获得 bug 修复和新特性
- 保证不会有破坏性更新
- 核心依赖推荐使用确切版本
- 避免意外的更新导致应用出问题
- 特别是框架类依赖
- 使用 package-lock.json
- 锁定具体版本
- 确保所有环境使用相同版本
- 定期更新依赖
- 使用
npm outdated
检查过时的包 - 使用
npm update
更新到新版本